package com.ssy.lingxi.order.model.vo.basic.response;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

/**
 * 订单详情返回
 * @author 万宁
 * @version 2.0.0
 * @date 2021-07-19
 */
public class OrderDetailVO implements Serializable {
    private static final long serialVersionUID = 2121001278901966852L;

    public OrderDetailVO() {
        this.outerSteps = new ArrayList<>();
        this.currentOuterStep = 0;
        this.innerSteps = new ArrayList<>();
        this.currentInnerStep = 0;
        this.orderId = 0L;
        this.innerStatus = 0;
        this.innerStatusName = "";
        this.outerStatus = 0;
        this.outerStatusName = "";
        this.orderModeName = "";
        this.shopName = "";
        this.quoteNo = "";
        this.digest = "";
        this.orderTypeName = "";
        this.createTime = "";
        this.outerHistories = new ArrayList<>();
        this.innerHistories = new ArrayList<>();
    }

    /**
     * 外部流转步骤
     */
    private List<WorkFlowStepVO> outerSteps;

    /**
     * 当前的外部流转步骤
     */
    private Integer currentOuterStep;

    /**
     * 内部流转步骤
     */
    private List<WorkFlowStepVO> innerSteps;

    /**
     * 当前的内部流转步骤
     */
    private Integer currentInnerStep;

    /**
     * 订单Id
     */
    private Long orderId;

    /**
     * 订单号
     */
    private String orderNo;

    /**
     * 内部状态枚举
     */
    private Integer innerStatus;

    /**
     * 内部状态名称
     */
    private String innerStatusName;

    /**
     * 外部状态枚举
     */
    private Integer outerStatus;

    /**
     * 外部状态名称
     */
    private String outerStatusName;

    /**
     * 下单模式：1-进货单下单，2-手工下单，3-询价报价下单，4-需求报价下单，5-合并订单下单，6-渠道直采进货单下单，7-渠道直采手工下单，8-渠道现货进货单下单，9-渠道现货手工下单，10-积分下单，11-渠道积分下单，12-采购询价，13-采购招标，14-采购竞价
     */
    private Integer orderMode;

    /**
     * 下单模式名称
     */
    private String orderModeName;

    /**
     * 订单种类，1-采购订单，2-SRM订单，3-B2B订单
     */
    private Integer orderKind;

    /**
     * 订单来源商城
     */
    private String shopName;

    /**
     * 报价单Id（如没有报价单则为0）
     */
    private Long quoteId;

    /**
     * 报价单号
     */
    private String quoteNo;

    /**
     * 订单摘要
     */
    private String digest;

    /**
     * 订单类型名称
     */
    private String orderTypeName;

    /**
     * 下单时间，格式为yyyy-MM-dd HH:mm:ss
     */
    private String createTime;

    /**
     * 是否有合同，true-有，false-没有
     */
    private Boolean hasContract;

    /**
     * 是否有发票，true-有，false-没有
     */
    private Boolean hasInvoice;

    /**
     * 外部流转记录
     */
    private List<OrderOuterHistoryVO> outerHistories;

    /**
     * 内部流转记录
     */
    private List<OrderInnerHistoryVO> innerHistories;



    public List<WorkFlowStepVO> getOuterSteps() {
        return outerSteps;
    }

    public void setOuterSteps(List<WorkFlowStepVO> outerSteps) {
        this.outerSteps = outerSteps;
    }

    public Integer getCurrentOuterStep() {
        return currentOuterStep;
    }

    public void setCurrentOuterStep(Integer currentOuterStep) {
        this.currentOuterStep = currentOuterStep;
    }

    public List<WorkFlowStepVO> getInnerSteps() {
        return innerSteps;
    }

    public void setInnerSteps(List<WorkFlowStepVO> innerSteps) {
        this.innerSteps = innerSteps;
    }

    public Integer getCurrentInnerStep() {
        return currentInnerStep;
    }

    public void setCurrentInnerStep(Integer currentInnerStep) {
        this.currentInnerStep = currentInnerStep;
    }

    public Long getOrderId() {
        return orderId;
    }

    public void setOrderId(Long orderId) {
        this.orderId = orderId;
    }

    public String getOrderNo() {
        return orderNo;
    }

    public void setOrderNo(String orderNo) {
        this.orderNo = orderNo;
    }

    public Integer getInnerStatus() {
        return innerStatus;
    }

    public void setInnerStatus(Integer innerStatus) {
        this.innerStatus = innerStatus;
    }

    public String getInnerStatusName() {
        return innerStatusName;
    }

    public void setInnerStatusName(String innerStatusName) {
        this.innerStatusName = innerStatusName;
    }

    public Integer getOuterStatus() {
        return outerStatus;
    }

    public void setOuterStatus(Integer outerStatus) {
        this.outerStatus = outerStatus;
    }

    public String getOuterStatusName() {
        return outerStatusName;
    }

    public void setOuterStatusName(String outerStatusName) {
        this.outerStatusName = outerStatusName;
    }

    public Integer getOrderMode() {
        return orderMode;
    }

    public void setOrderMode(Integer orderMode) {
        this.orderMode = orderMode;
    }

    public String getOrderModeName() {
        return orderModeName;
    }

    public void setOrderModeName(String orderModeName) {
        this.orderModeName = orderModeName;
    }

    public Integer getOrderKind() {
        return orderKind;
    }

    public void setOrderKind(Integer orderKind) {
        this.orderKind = orderKind;
    }

    public String getShopName() {
        return shopName;
    }

    public void setShopName(String shopName) {
        this.shopName = shopName;
    }

    public Long getQuoteId() {
        return quoteId;
    }

    public void setQuoteId(Long quoteId) {
        this.quoteId = quoteId;
    }

    public String getQuoteNo() {
        return quoteNo;
    }

    public void setQuoteNo(String quoteNo) {
        this.quoteNo = quoteNo;
    }

    public String getDigest() {
        return digest;
    }

    public void setDigest(String digest) {
        this.digest = digest;
    }

    public String getOrderTypeName() {
        return orderTypeName;
    }

    public void setOrderTypeName(String orderTypeName) {
        this.orderTypeName = orderTypeName;
    }

    public String getCreateTime() {
        return createTime;
    }

    public void setCreateTime(String createTime) {
        this.createTime = createTime;
    }

    public Boolean getHasContract() {
        return hasContract;
    }

    public void setHasContract(Boolean hasContract) {
        this.hasContract = hasContract;
    }

    public Boolean getHasInvoice() {
        return hasInvoice;
    }

    public void setHasInvoice(Boolean hasInvoice) {
        this.hasInvoice = hasInvoice;
    }

    public List<OrderOuterHistoryVO> getOuterHistories() {
        return outerHistories;
    }

    public void setOuterHistories(List<OrderOuterHistoryVO> outerHistories) {
        this.outerHistories = outerHistories;
    }

    public List<OrderInnerHistoryVO> getInnerHistories() {
        return innerHistories;
    }

    public void setInnerHistories(List<OrderInnerHistoryVO> innerHistories) {
        this.innerHistories = innerHistories;
    }
}
